const getGuid = function () {
  var d = new Date().getTime();
  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,
    function () {
      var r = (d + Math.random() * 16) % 16 | 0;
      d = Math.floor(d / 16);
      return ('x' ? r : (r & 0x3 | 0x8)).toString(16);
    });
  return uuid;
}

/**
 * [通过参数名获取url中的参数值]
 * 示例URL:http://htmlJsTest/getrequest.html?uid=admin&rid=1&fid=2&name=小明
 * @param  {string} variable [参数名]
 * @return {Object}           [参数值]
 */
const getRequestParms = function (variable) {
  const query = window.location.search.substring(1);
  const vars = query.split("&");
  for (let i = 0; i < vars.length; i++) {
    const pair = vars[i].split("=");
    if (pair[0] === variable) {
      return pair[1];
    }
  }
  return false;
}

/**
 * 判断是否是只读模式
 * @returns
 */
function isReadModel() {
  // const admin = getRequestParms("role");
  // if (admin && (admin === 'control_center' || admin === 'manage_center')) {
  //   return false;
  // } else {
  //   return true;
  // }
  return false;
}

// 定义一个深拷贝函数  接收目标target参数
function deepClone(target) {
  // 定义一个变量
  let result;
  // 如果当前需要深拷贝的是一个对象的话
  if (typeof target === 'object') {
    // 如果是一个数组的话
    if (Array.isArray(target)) {
      result = []; // 将result赋值为一个数组，并且执行遍历
      for (let i in target) {
        // 递归克隆数组中的每一项
        result.push(deepClone(target[i]))
      }
      // 判断如果当前的值是null的话；直接赋值为null
    } else if (target === null) {
      result = null;
      // 判断如果当前的值是一个RegExp对象的话，直接赋值
    } else if (target.constructor === RegExp) {
      result = target;
    } else {
      // 否则是普通对象，直接for in循环，递归赋值对象的所有值
      result = {};
      for (let i in target) {
        result[i] = deepClone(target[i]);
      }
    }
    // 如果不是对象的话，就是基本数据类型，那么直接赋值
  } else {
    result = target;
  }
  // 返回最终结果
  return result;
}

function download(data, fileName) {  //下载核心方法
  if (!data) {
    return
  }
  let blob = new Blob([data])
  if ('download' in document.createElement('a')) { // 不是IE浏览器
    let url = window.URL.createObjectURL(blob)
    let link = document.createElement('a')
    link.style.display = 'none'
    link.href = url
    link.setAttribute('download', fileName)
    document.body.appendChild(link)
    link.click()
    document.body.removeChild(link) // 下载完成移除元素
    window.URL.revokeObjectURL(url) // 释放掉blob对象
    // let url = window.URL.createObjectURL(new Blob([res.data], { type: '.xlsx' }));
    // let a = document.createElement('a');
    // a.style.display = 'none';
    // a.href = url;
    // a.setAttribute('download', `${this.downloadName}.xlsx`);
    // document.body.appendChild(a);
    // a.click();
    // url = window.URL.revokeObjectURL(url);
    // document.body.removeChild(a)
  } else { // IE 10+
    window.navigator.msSaveBlob(blob, fileName)
  }
}

export default {getGuid, getRequestParms, isReadModel, deepClone, download};

